<?php
//声明该模型类的命名空间
namespace Home\Model;
//引入继承类的命名空间
use Think\Model\RelationModel;

class UserModel extends RelationModel
{
	//关联定义用户表，就是通过user_id来关联查询其他的表，这里是Car和Order
	protected $_link = array(

		'Car' => self::HAS_MANY, //表示与car表进行关联，与car表的关系是一对多
		'Order' => self::HAS_MANY, //表示与order表进行关联，与order表的关系是一对多
	);

	//验证用户的登录信息功能，返回错误信息，如果错误信息为空则验证通过
	public function checkLogin($user_info)
	{
		//将用户和服务器生成的验证码值都转为小写
		$user_validation = strtolower($user_info['validation']);
		$realValidation = strtolower(session('v'));
		//比较验证，通过继续验证账户和密码，没通过返回验证码错误
		if ($user_validation == $realValidation) {
			//查询传进来的用户名的密码和密码盐。如果用户名不存在提示错误
			$where = array(
				'u_name' => $user_info['u_name'],
			);
			//获取用户名
			$info = $this->field('u_pwd,u_salt')->where($where)->find();
			//如果用户名为空
			if (empty($info)) {
				$error[] = "用户名不存在！";
				return $error;
			}
			//如果用户名存在，将用户提交的密码进行与查询的密码盐进行md5加密后与查询出的密码比对
			$u_pwd = md5($info['u_salt'] . md5($user_info['u_pwd']));
			if ($u_pwd == $info['u_pwd']) {
				return $error;
			} else {
				$error[] = '用户名或密码错误';
				return $error;
			}
		}
		$error[] = "验证码错误";
		return $error;
	}
	//验证用户的注册功能，返回错误信息，如果错误信息为空则验证通过
	public function validation($user_info)
	{
		//检测用户表单提交的信息（用户名，密码，手机号，邮箱）是否符合格式
		$error[] = checkUsername($user_info['u_name']);
		$error[] = checkPassword($user_info['u_pwd2']);
		$error[] = checkPhone($user_info['u_phone']);
		$error[] = checkEmail($user_info['u_email']);
		//返回错误信息
		return $error;
	}
	//验证用户名是否存在，存在返回错误信息，不存在注册并返回null
	public function register($user_info)
	{
		//获取用户名
		$where = array(
			'u_name' => $user_info['u_name'],
		);
		//查询用户名是否存在
		if ($this->where($where)->find()) {
			//返回错误信息，用户名已存在
			return $error = '用户名已存在！';
		} else {
			//注册用户
			//生成密码盐
			$u_salt = md5(microtime());
			//使用密码盐加密用户注册密码
			$u_pwd = md5($u_salt . md5($user_info['u_pwd2']));
			//生成插入字段
			$arr = array('u_name' => $user_info['u_name'], 'u_pwd' => $u_pwd, 'u_salt' => $u_salt, 'mobile_phone' => $user_info['u_phone'], 'u_email' => $user_info['u_email']);
			//执行插入
			print_r($this->add($arr));
			return null;
		}
	}
}
